@echo off

:: 实现功能：
:: 1.复制指定目录到另一个指定目录
:: 2.将新目录下的所有文件名中的字符串替换为新的字符串
:: 3.将新目录所有文件内容中的字符串替换为新的字符串

set dirsrc=dir001
set dirdst=dir004

set strold=001
set strnew=004

:: 复制目录
xcopy /E /I "%dirsrc%" "%dirdst%"

:: 遍历目录下的所有文件，替换文件名中的字符串
setlocal enabledelayedexpansion
for %%f in ("%dirdst%\*") do (
    set filename=%%~nxf
    set newname=!filename:%strold%=%strnew%!
    :: 重命名文件
    ren "%%f" "!newname!"
)

:: 替换文件内容中的字符串
for %%f in ("%dirdst%\*") do (
    (for /f "tokens=*" %%i in (%%f) do (
        set line=%%i
        echo !line:%strold%=%strnew%!
    )) > "%dirdst%\temp_%%~nxf"
    :: 替换原始文件
    del "%%f"
    ren "%dirdst%\temp_%%~nxf" "%%~nxf"
)
endlocal

echo 操作完成
